# Credit: Franklin Souza
# Telegram: @FranklinTech

# Configuração para o Alacritty, o emulador de terminal aprimorado por GPU.

# Quaisquer itens na entrada 'env' abaixo serão adicionados como
# variáveis ambientais. Algumas entradas podem substituir variáveis
# definido pelo próprio alacritty.
# env:
  # Variável TERM
  #
  # Este valor é usado para definir a variável de ambiente '$ TERM' para
  # cada instância da Alacritty. Se não estiver presente, a credibilidade será
  # verifique o banco de dados terminfo local e use 'alacritty' se for
  # disponível, caso contrário, 'xterm-256color' é usado.
  # TERM: alacritty

window:
  # Dimensões da janela (alterações requerem reinicialização)
  #
  # Especificado em número de colunas/linhas, não pixels.
  # Se os dois forem "0", essa configuração será ignorada.
  dimensions:
    columns: 62
    lines: 17

  # Preenchimento de janela (alterações requerem reinicialização)
  #
  # Espaço em branco adicionado ao redor da janela em pixels. Este preenchimento não é redimensionado
  # por DPI e o valor especificado é sempre adicionado nos dois lados opostos.
  padding:
    x: 0
    y: 0

  # Decorações para janelas
  #
  # Valores para 'decorações':
  #     - full: Bordas e barra de título
  #     - none: Nem bordas nem barra de título
  decorations: full

scrolling:
  # Número máximo de linhas no buffer de rolagem.
  # Especificar '0' desabilitará a rolagem.
  history: 10000

  # Número de linhas que o visor moverá para cada linha rolada quando
  # o scrollback está ativado (history > 0).
  multiplier: 3

  # Rolagem falso
  #
  # A configuração `faux_multiplier` controla o número de linhas que o terminal
  # deve rolar quando o buffer de tela alternativo estiver ativo. Isso é usado
  # para permitir a rolagem do mouse para aplicativos como o 'man'.
  #
  # A especificação de '0' desativará a rolagem falsa.
  #faux_multiplier: 3

  # Role para a parte inferior quando um novo texto for escrito no terminal.
  #auto_scroll: false

# Espaços por guia (as alterações requerem reinicialização)
#
# Essa configuração define a largura de uma guia nas células.
#
# Alguns aplicativos, como o Emacs, contam com o conhecimento da largura de uma guia.
# Para evitar comportamentos inesperados nesses aplicativos, também é necessário
# altere o valor 'it' no terminfo ao alterar esta configuração.
#tabspaces: 8

# Configuração de fonte (as alterações requerem reinicialização)
#
# Atributos de fonte importantes, como antialiasing, subpixel aa e dicas podem ser
# controlado através de fontconfig. Especificamente, os seguintes atributos devem
# ter um efeito:
#   - hintstyle
#   - antialias
#   - lcdfilter
#   - rgba
#
# Por exemplo, se você deseja desativar o antialiasing de subpixel, pode definir o
# propriedade rgba para "none". Se você deseja desativar completamente o antialiasing,
# pode definir antialias como "false".
#
# Consulte estes recursos para obter mais informações sobre como usar o fontconfig:
#   - https://wiki.archlinux.org/index.php/font_configuration#Fontconfig_configuration
#   - file:///usr/share/doc/fontconfig/fontconfig-user.html
font:
  # Fonte -> Normal
  normal:
    family: FiraCode
    # family: Fantasque Sans Mono
    # family: Jetbrains Mono
    # The `style` can be specified to pick a specific face.
    # The `style` can be specified to pick a specific face.
    style: Medium

  # Fonte -> Bold
  bold:
    family: FiraCode
    # family: Fantasque Sans Mono
    # family: Jetbrains Mono
    # The `style` can be specified to pick a specific face.
    style: Bold

  # Fonte -> Italic
  italic:
  italic:
    family: FiraCode
    # family: Fantasque Sans Mono
    # family: Jetbrains Mono
    # The `style` can be specified to pick a specific face.
    style: Italic

  # Tamanho da fonte
  size: 7.6

  # Deslocamento é o espaço extra em torno de cada personagem. pode-se pensar em "offset.y"
  # como modificar o espaçamento entre linhas, e "offset.x" como modificar o espaçamento entre letras.
  offset:
    x: 0
    y: 0

  # O deslocamento de glifo determina a localização dos glifos dentro de suas células com
  # o padrão está na parte inferior. Aumentar "x" move o glifo para a direita,
  # aumentar "y" move o glifo para cima.
  glyph_offset:
    x: 0
    y: 0
    
  # Renderização de fonte de traço fino (somente no macOS)
  #
  # Traços finos são adequados para telas de retina, mas para telas sem retina
  # é recomendável definir "use_thin_strokes" como "false"
  #
  # macOS >= 10.14.x:
  #
  # Se a qualidade da fonte na tela sem retina parecer ruim, defina
  # "use_thin_strokes" para "true" e habilite a suavização de fonte executando o
  # seguinte comando:
  #   `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO`
  #
  # Essa é uma configuração global e exigirá um logout ou reinicialização para executar
  # o efeito.
  use_thin_strokes: true

# Se verdadeiro, o texto em negrito é desenhado usando as variantes de cores brilhantes.
draw_bold_text_with_bright_colors: true

# Cores (Nord)
colors:
  # Cores padrão
  primary:
    background: '0x2E3440'
    foreground: '0xD8DEE9'

    # Cores brilhantes e escuras em primeiro plano
    #
    # A cor esbatida do primeiro plano é calculada automaticamente se não estiver presente.
    # Se a cor brilhante do primeiro plano não estiver definida, ou "draw_bold_text_with_bright_colors"
    #"false", a cor normal do primeiro plano será usada.
    #dim_foreground: '0x9a9a9a'
    #bright_foreground: '0xffffff'

  # Cores do cursor
  #
  # Cores que devem ser usadas para desenhar o cursor do terminal. Se estes não estiverem definidos,
  # a cor do cursor será o inverso da cor da célula.
  cursor:
    text: '0x2E3440'
    cursor: '0xD8DEE9'

  # Cores normais
  normal:
    black: '0x2E3440'
    red: '0xBF616A'
    green: '0xA3BE8C'
    yellow: '0xEBCB8B'
    blue: '0x81A1C1'
    magenta: '0xB48EAD'
    cyan: '0x88C0D0'
    white: '0xE5E9F0'

  # Cores brilhantes
  bright:
    black: '0x2E3440'
    red: '0xBF616A'
    green: '0xA3BE8C'
    yellow: '0xEBCB8B'
    blue: '0x81A1C1'
    magenta: '0xB48EAD'
    cyan: '0x8FBCBB'
    white: '0xECEFF4'

  # Cores escuras
  #
  # Se as cores escuras não estiverem definidas, elas serão calculadas automaticamente com base
  # nas cores "normais".
  # dim:
    # black:   '0x14151b'
    # red:     '0xff2222'
    # green:   '0x1ef956'
    # yellow:  '0xebf85b'
    # blue:    '0x4d5b86'
    # magenta: '0xff46b0'
    # cyan:    '0x59dffc'
    # white:   '0xe6e6d1'

  # Cores indexadas
  #
  # As cores indexadas incluem todas as cores de 16 a 256.
  # Quando não estão definidas, são preenchidas com padrões sensíveis.
  #
  # Exemplo:
  #   `- { index: 16, color: '0xff00ff' }`
  #
  indexed_colors: []

# Visual Bell
# Sempre que o código BEL é recebido, Alacritty "toca" a campainha visual. Uma vez
# toque, o fundo do terminal será definido para branco e voltará para o
# cor de fundo padrão. Você pode controlar a taxa dessa transição
# definindo a propriedade 'duration' (representada em milissegundos). Você também pode
# configure a função de transição definindo a propriedade 'animation'.
#
# Valores para "animação":
#   - Ease
#   - EaseOut
#   - EaseOutSine
#   - EaseOutQuad
#   - EaseOutCubic
#   - EaseOutQuart
#   - EaseOutQuint
#   - EaseOutExpo
#   - EaseOutCirc
#   - Linear
#
# Especificar uma "duração" de "0" desativará a campainha visual.
# visual_bell:
  # animation: EaseOutExpo
  # duration: 0

# Opacidade de fundo
#
# Opacidade da janela como um número de ponto flutuante de "0,0 a "1,0".
# O valor "0.0" é completamente transparente e "1.0" é opaco.
background_opacity: 1.0

# Ligações do mouse
#
# Campos disponíveis:
#   - mouse
#   - action
#   - mods (optional)
#
# Valores para o "mouse":
#   - Middle
#   - Left
#   - Right
#   - Numeric identifier such as `5`
#
# Todos os valores "mods" e "action" disponíveis estão documentados na encadernação de teclas
# de seção.
mouse_bindings:
  - { mouse: Right, action: PasteSelection }

mouse:
  # Clique em configurações
  #
  # As configurações `double_click` e` triple_click` controlam o tempo
  # alacritty deve esperar pela aceitação de vários cliques como um
  # ou clique três vezes.
  double_click: { threshold: 300 }
  triple_click: { threshold: 300 }

  # Se for "verdadeiro", o cursor fica temporariamente oculto ao digitar.
  hide_when_typing: false

url:
    # Iniciador de URL
    #
    # Este programa é executado ao clicar em um texto que é reconhecido como um URL.
    # A URL é sempre adicionada ao comando como o último parâmetro.
    #
    # Quando definido como "Nenhum", o lançamento do URL será desativado completamente.
    #
    # Padrão:
    #   - (macOS) open
    #   - (Linux) xdg-open
    #   - (Windows) explorer
    launcher:
      program: xdg-open
    #  args: []

    # Modificadores de URL
    #
    # Estes são os modificadores que precisam ser mantidos pressionados para abrir URLs ao clicar
    # neles. Os modificadores disponíveis estão documentados na seção de ligação de teclas.
    modifiers: None

selection:
  semantic_escape_chars: ",│`|:\"' ()[]{}<>"

  # Quando definido como "true", o texto selecionado será copiado para o primário e o
  # a área de transferência de seleção. Caso contrário, ele será copiado apenas para a seleção
  # da área de transferência
  save_to_clipboard: true

# dynamic_title: true

cursor:
  # Estilo do cursor
  #
  # Valores para o "estilo":
  #   - ▇ Block
  #   - _ Underline
  #   - | Beam
  style: Underline

  # Se for "true", o cursor será renderizado como uma caixa oca quando o
  # janela não está focada.
  unfocused_hollow: false

# Recarregamento de configuração ao vivo (alterações requerem reinicialização)
live_config_reload: true

# Shell
#
# Você pode definir o "shell.program" como o caminho do seu shell favorito, por exemplo, "/bin/fish".
# Entradas no "shell.args" são passadas sem modificação como argumentos para o shell.
#
# Padrão:
#   - (Linux/macOS) /bin/bash --login
#   - (Windows) powershell
#shell:
#  program: /bin/bash
#  args:
#    - --login

# Back-end ConPTY do Windows 10 (somente Windows)
#
# Isso permitirá um melhor suporte de cores e poderá resolver outros problemas,
# no entanto, essa API e sua implementação ainda são jovens e também
# desativado por padrão, pois a estabilidade pode não ser tão boa quanto o winpty
# no backend.
#
# O Alacritty retornará ao WinPTY automaticamente se o ConPTY
# e o back-end não pode ser inicializado.
enable_experimental_conpty_backend: false

# Envie ESC(\x1b) antes dos caracteres quando alt for pressionado.
alt_send_esc: true

debug:
  # Exiba o tempo necessário para redesenhar cada quadro.
  render_timer: false

  # Mantenha o arquivo de log após sair do Alacritty.
  persistent_logging: false

  # Log level
  #
  # Valores para "log_level":
  #   - None
  #   - Error
  #   - Warn
  #   - Info
  #   - Debug
  #   - Trace
  log_level: Warn

  # Imprima todos os eventos da janela recebidos.
  print_events: false

  # Grave todos os caracteres e sequências de escape como dados de teste.
  ref_test: false

# Combinações de teclas
#
# As ligações de teclas são especificadas como uma lista de objetos. Cada ligação especificará um
# chave e modificadores necessários para acioná-lo, modos terminais onde a ligação é
# aplicável e o que deve ser feito quando a ligação da chave for acionada. Pode
# envie uma sequência de bytes para o aplicativo em execução ("chars"), execute um
# ação predefinida ("action") ou fork e execute um comando especificado mais
# argumentos ("comando").
#
# As ligações são sempre preenchidas por padrão, mas serão substituídas quando uma nova ligação
# com os mesmos gatilhos é definido. Para desabilitar uma ligação padrão, pode ser
# mapeado para a ação "Nenhum".
#
# Exemplo:
#   `- { key: V, mods: Control|Shift, action: Paste }`
#
# Campos disponíveis:
#   - key
#   - mods (optional)
#   - chars | action | command (exactly one required)
#   - mode (optional)
#
# Valores para "key":
#   - `A` -> `Z`
#   - `F1` -> `F12`
#   - `Key1` -> `Key0`
#
#  Uma lista completa com os códigos de chave disponíveis pode ser encontrada aqui:
#   https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants
#
#   Em vez de usar o nome das chaves, o campo "key" também suporta o uso
#   o código de digitalização da tecla desejada. Os códigos de digitalização devem ser especificados como
#   número decimal
#   Este comando permitirá que você exiba os códigos de código hexadecimais para determinadas chaves:
#     `showkey --scancodes`
#
# Valores para "mods":
#   - Command
#   - Control
#   - Super
#   - Shift
#   - Alt
#
#   Vários "mods" podem ser combinados usando assim: | "mods: Control" | "Shift".
#   Espaço em branco e letras maiúsculas são relevantes e devem corresponder ao exemplo.
#
# Valores para "chars":
#   O campo "chars" grava a string especificada no terminal. Isto é
#   possível passar sequências de escape.
#   Para encontrar códigos de escape para ligações como "PageUp" ("\x1b[5~"), você pode executar
#   o comando "showkey -a" fora do tmux.
#   Observe que os aplicativos usam terminfo para mapear seqüências de escape de volta para
#   chaves. Portanto, é necessário atualizar o terminfo quando
#   alterando uma sequência de escape.
#
# Valores para "action":
#   - Paste
#   - PasteSelection
#   - Copy
#   - IncreaseFontSize
#   - DecreaseFontSize
#   - ResetFontSize
#   - ScrollPageUp
#   - ScrollPageDown
#   - ScrollLineUp
#   - ScrollLineDown
#   - ScrollToTop
#   - ScrollToBottom
#   - ClearHistory
#   - Hide
#   - Quit
#   - ClearLogNotice
#   - SpawnNewInstance
#   - None
#
# Valores para "command":
#   O campo "command" deve ser um mapa contendo uma string` program` e
#   uma matriz "args" de cadeias de parâmetros de linha de comando.
#
#   Exemplo:
#       `command: { program: "alacritty", args: ["-e", "vttest"] }`
#
# Valores Para "mode":
#   - ~AppCursor
#   - AppCursor
#   - ~AppKeypad
#   - AppKeypad
key_bindings:
  # (Windows/Linux only)
  #- { key: V,        mods: Control|Shift, action: Paste            }
  #- { key: C,        mods: Control|Shift, action: Copy             }
  #- { key: Insert,   mods: Shift,         action: PasteSelection   }
  #- { key: Key0,     mods: Control,       action: ResetFontSize    }
  #- { key: Equals,   mods: Control,       action: IncreaseFontSize }
  #- { key: Add,      mods: Control,       action: IncreaseFontSize }
  #- { key: Subtract, mods: Control,       action: DecreaseFontSize }
  #- { key: Minus,    mods: Control,       action: DecreaseFontSize }

  # (macOS only)
  #- { key: Key0,   mods: Command, action: ResetFontSize    }
  #- { key: Equals, mods: Command, action: IncreaseFontSize }
  #- { key: Add,    mods: Command, action: IncreaseFontSize }
  #- { key: Minus,  mods: Command, action: DecreaseFontSize }
  #- { key: K,      mods: Command, action: ClearHistory     }
  #- { key: K,      mods: Command, chars: "\x0c"            }
  #- { key: V,      mods: Command, action: Paste            }
  #- { key: C,      mods: Command, action: Copy             }
  #- { key: H,      mods: Command, action: Hide             }
  #- { key: Q,      mods: Command, action: Quit             }
  #- { key: W,      mods: Command, action: Quit             }

  - { key: Paste,                   action: Paste                            }
  - { key: Copy,                    action: Copy                             }
  - { key: L,        mods: Control, action: ClearLogNotice                   }
  - { key: L,        mods: Control, chars: "\x0c"                            }
  - { key: Home,     mods: Alt,     chars: "\x1b[1;3H"                       }
  - { key: Home,                    chars: "\x1bOH",        mode: AppCursor  }
  - { key: Home,                    chars: "\x1b[H",        mode: ~AppCursor }
  - { key: End,      mods: Alt,     chars: "\x1b[1;3F"                       }
  - { key: End,                     chars: "\x1bOF",        mode: AppCursor  }
  - { key: End,                     chars: "\x1b[F",        mode: ~AppCursor }
  - { key: PageUp,   mods: Shift,   action: ScrollPageUp,   mode: ~Alt       }
  - { key: PageUp,   mods: Shift,   chars: "\x1b[5;2~",     mode: Alt        }
  - { key: PageUp,   mods: Control, chars: "\x1b[5;5~"                       }
  - { key: PageUp,   mods: Alt,     chars: "\x1b[5;3~"                       }
  - { key: PageUp,                  chars: "\x1b[5~"                         }
  - { key: PageDown, mods: Shift,   action: ScrollPageDown, mode: ~Alt       }
  - { key: PageDown, mods: Shift,   chars: "\x1b[6;2~",     mode: Alt        }
  - { key: PageDown, mods: Control, chars: "\x1b[6;5~"                       }
  - { key: PageDown, mods: Alt,     chars: "\x1b[6;3~"                       }
  - { key: PageDown,                chars: "\x1b[6~"                         }
  - { key: Tab,      mods: Shift,   chars: "\x1b[Z"                          }
  - { key: Back,                    chars: "\x7f"                            }
  - { key: Back,     mods: Alt,     chars: "\x1b\x7f"                        }
  - { key: Insert,                  chars: "\x1b[2~"                         }
  - { key: Delete,                  chars: "\x1b[3~"                         }
  - { key: Left,     mods: Shift,   chars: "\x1b[1;2D"                       }
  - { key: Left,     mods: Control, chars: "\x1b[1;5D"                       }
  - { key: Left,     mods: Alt,     chars: "\x1b[1;3D"                       }
  - { key: Left,                    chars: "\x1b[D",        mode: ~AppCursor }
  - { key: Left,                    chars: "\x1bOD",        mode: AppCursor  }
  - { key: Right,    mods: Shift,   chars: "\x1b[1;2C"                       }
  - { key: Right,    mods: Control, chars: "\x1b[1;5C"                       }
  - { key: Right,    mods: Alt,     chars: "\x1b[1;3C"                       }
  - { key: Right,                   chars: "\x1b[C",        mode: ~AppCursor }
  - { key: Right,                   chars: "\x1bOC",        mode: AppCursor  }
  - { key: Up,       mods: Shift,   chars: "\x1b[1;2A"                       }
  - { key: Up,       mods: Control, chars: "\x1b[1;5A"                       }
  - { key: Up,       mods: Alt,     chars: "\x1b[1;3A"                       }
  - { key: Up,                      chars: "\x1b[A",        mode: ~AppCursor }
  - { key: Up,                      chars: "\x1bOA",        mode: AppCursor  }
  - { key: Down,     mods: Shift,   chars: "\x1b[1;2B"                       }
  - { key: Down,     mods: Control, chars: "\x1b[1;5B"                       }
  - { key: Down,     mods: Alt,     chars: "\x1b[1;3B"                       }
  - { key: Down,                    chars: "\x1b[B",        mode: ~AppCursor }
  - { key: Down,                    chars: "\x1bOB",        mode: AppCursor  }
  - { key: F1,                      chars: "\x1bOP"                          }
  - { key: F2,                      chars: "\x1bOQ"                          }
  - { key: F3,                      chars: "\x1bOR"                          }
  - { key: F4,                      chars: "\x1bOS"                          }
  - { key: F5,                      chars: "\x1b[15~"                        }
  - { key: F6,                      chars: "\x1b[17~"                        }
  - { key: F7,                      chars: "\x1b[18~"                        }
  - { key: F8,                      chars: "\x1b[19~"                        }
  - { key: F9,                      chars: "\x1b[20~"                        }
  - { key: F10,                     chars: "\x1b[21~"                        }
  - { key: F11,                     chars: "\x1b[23~"                        }
  - { key: F12,                     chars: "\x1b[24~"                        }
  - { key: F1,       mods: Shift,   chars: "\x1b[1;2P"                       }
  - { key: F2,       mods: Shift,   chars: "\x1b[1;2Q"                       }
  - { key: F3,       mods: Shift,   chars: "\x1b[1;2R"                       }
  - { key: F4,       mods: Shift,   chars: "\x1b[1;2S"                       }
  - { key: F5,       mods: Shift,   chars: "\x1b[15;2~"                      }
  - { key: F6,       mods: Shift,   chars: "\x1b[17;2~"                      }
  - { key: F7,       mods: Shift,   chars: "\x1b[18;2~"                      }
  - { key: F8,       mods: Shift,   chars: "\x1b[19;2~"                      }
  - { key: F9,       mods: Shift,   chars: "\x1b[20;2~"                      }
  - { key: F10,      mods: Shift,   chars: "\x1b[21;2~"                      }
  - { key: F11,      mods: Shift,   chars: "\x1b[23;2~"                      }
  - { key: F12,      mods: Shift,   chars: "\x1b[24;2~"                      }
  - { key: F1,       mods: Control, chars: "\x1b[1;5P"                       }
  - { key: F2,       mods: Control, chars: "\x1b[1;5Q"                       }
  - { key: F3,       mods: Control, chars: "\x1b[1;5R"                       }
  - { key: F4,       mods: Control, chars: "\x1b[1;5S"                       }
  - { key: F5,       mods: Control, chars: "\x1b[15;5~"                      }
  - { key: F6,       mods: Control, chars: "\x1b[17;5~"                      }
  - { key: F7,       mods: Control, chars: "\x1b[18;5~"                      }
  - { key: F8,       mods: Control, chars: "\x1b[19;5~"                      }
  - { key: F9,       mods: Control, chars: "\x1b[20;5~"                      }
  - { key: F10,      mods: Control, chars: "\x1b[21;5~"                      }
  - { key: F11,      mods: Control, chars: "\x1b[23;5~"                      }
  - { key: F12,      mods: Control, chars: "\x1b[24;5~"                      }
  - { key: F1,       mods: Alt,     chars: "\x1b[1;6P"                       }
  - { key: F2,       mods: Alt,     chars: "\x1b[1;6Q"                       }
  - { key: F3,       mods: Alt,     chars: "\x1b[1;6R"                       }
  - { key: F4,       mods: Alt,     chars: "\x1b[1;6S"                       }
  - { key: F5,       mods: Alt,     chars: "\x1b[15;6~"                      }
  - { key: F6,       mods: Alt,     chars: "\x1b[17;6~"                      }
  - { key: F7,       mods: Alt,     chars: "\x1b[18;6~"                      }
  - { key: F8,       mods: Alt,     chars: "\x1b[19;6~"                      }
  - { key: F9,       mods: Alt,     chars: "\x1b[20;6~"                      }
  - { key: F10,      mods: Alt,     chars: "\x1b[21;6~"                      }
  - { key: F11,      mods: Alt,     chars: "\x1b[23;6~"                      }
  - { key: F12,      mods: Alt,     chars: "\x1b[24;6~"                      }
  - { key: F1,       mods: Super,   chars: "\x1b[1;3P"                       }
  - { key: F2,       mods: Super,   chars: "\x1b[1;3Q"                       }
  - { key: F3,       mods: Super,   chars: "\x1b[1;3R"                       }
  - { key: F4,       mods: Super,   chars: "\x1b[1;3S"                       }
  - { key: F5,       mods: Super,   chars: "\x1b[15;3~"                      }
  - { key: F6,       mods: Super,   chars: "\x1b[17;3~"                      }
  - { key: F7,       mods: Super,   chars: "\x1b[18;3~"                      }
  - { key: F8,       mods: Super,   chars: "\x1b[19;3~"                      }
  - { key: F9,       mods: Super,   chars: "\x1b[20;3~"                      }
  - { key: F10,      mods: Super,   chars: "\x1b[21;3~"                      }
  - { key: F11,      mods: Super,   chars: "\x1b[23;3~"                      }
  - { key: F12,      mods: Super,   chars: "\x1b[24;3~"                      }
  - { key: NumpadEnter,             chars: "\n"                              }
